/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

云部署
云部署应用、部署组、部署任务相关的接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef DeployClient_h
#define DeployClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKDeploy/DeployApiModel.h>

@interface DeployClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    describeApp sync request
    @param describeAppRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAppResponse` the request response data model
    */
    -(NSDictionary*) describeAppSyncWithRequest:(DeployDescribeAppRequest*) describeAppRequest;

    -(void)describeAppAsyncWithRequest:(DeployDescribeAppRequest*) describeAppRequest
    completionHandler:(void(^)(int statusCode,DeployDescribeAppResponse* _Nullable describeAppResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createDeploy sync request
    @param createDeployRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createDeployResponse` the request response data model
    */
    -(NSDictionary*) createDeploySyncWithRequest:(DeployCreateDeployRequest*) createDeployRequest;

    -(void)createDeployAsyncWithRequest:(DeployCreateDeployRequest*) createDeployRequest
    completionHandler:(void(^)(int statusCode,DeployCreateDeployResponse* _Nullable createDeployResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeDeploy sync request
    @param describeDeployRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeDeployResponse` the request response data model
    */
    -(NSDictionary*) describeDeploySyncWithRequest:(DeployDescribeDeployRequest*) describeDeployRequest;

    -(void)describeDeployAsyncWithRequest:(DeployDescribeDeployRequest*) describeDeployRequest
    completionHandler:(void(^)(int statusCode,DeployDescribeDeployResponse* _Nullable describeDeployResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeApps sync request
    @param describeAppsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAppsResponse` the request response data model
    */
    -(NSDictionary*) describeAppsSyncWithRequest:(DeployDescribeAppsRequest*) describeAppsRequest;

    -(void)describeAppsAsyncWithRequest:(DeployDescribeAppsRequest*) describeAppsRequest
    completionHandler:(void(^)(int statusCode,DeployDescribeAppsResponse* _Nullable describeAppsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeGroups sync request
    @param describeGroupsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeGroupsResponse` the request response data model
    */
    -(NSDictionary*) describeGroupsSyncWithRequest:(DeployDescribeGroupsRequest*) describeGroupsRequest;

    -(void)describeGroupsAsyncWithRequest:(DeployDescribeGroupsRequest*) describeGroupsRequest
    completionHandler:(void(^)(int statusCode,DeployDescribeGroupsResponse* _Nullable describeGroupsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeGroup sync request
    @param describeGroupRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeGroupResponse` the request response data model
    */
    -(NSDictionary*) describeGroupSyncWithRequest:(DeployDescribeGroupRequest*) describeGroupRequest;

    -(void)describeGroupAsyncWithRequest:(DeployDescribeGroupRequest*) describeGroupRequest
    completionHandler:(void(^)(int statusCode,DeployDescribeGroupResponse* _Nullable describeGroupResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    deploy common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) deployCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)deployCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* DeployClient_h */
